//#############################################################################
//#############################################################################
//This source file was written by Mert Dogar. If you have some questions about
//the source code, please do not hesitate to ask me.
//The code is under GPL.
//Email: mertdogar@gmail.com , http://code.google.com/p/electron-cds
//#############################################################################
//#############################################################################

#ifndef MAIN_H
#define MAIN_H

//###########################################################
//A standart definition for pi.. :)
#define pi 3.14159265
//###########################################################

//###########################################################
//Standart Includes
#include <string>
#include <iostream>
#include <fstream>
#include <sstream>

//XML Include
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <libxml/xinclude.h>
#include <libxml/xmlIO.h>

//GTK&Glade&Gtkmm Includes
#include "./tinyxml/tinyxml.h"
#include "gtk_gui.h"
#include "log.h"

//###########################################################

//###########################################################


//###########################################################


//###########################################################
struct rgbcolor
{
	float red,green,blue;
};

struct vector2
{
	double x;
	double y;
};
//###########################################################


rgbcolor torgbcolor(float r, float g, float b);
vector2 tovector2(float xi, float yi);

void log(std::string message);
void set_part_name(std::string cname);
void read_settings(std::string filename);
int get_selected_index();
//###########################################################
//Window Definitions
bool init_main_window(int argc, char *argv[]);
void show_about_window(Glib::RefPtr<Gnome::Glade::Xml> refXml);
void show_message_window(Glib::RefPtr<Gnome::Glade::Xml> refXml,std::string message);
void show_library_window(Glib::RefPtr<Gnome::Glade::Xml> refXml);

//###########################################################


float togridvalue(float num,float factor);
void setgridwidth(float num);
bool isgridchage(vector2 pos);

#endif
